package platzerworld.kegeln.gui;

import platzerworld.kegeln.R;
import platzerworld.kegeln.common.ConstantsIF;
import platzerworld.kegeln.common.KeyValueVO;
import platzerworld.kegeln.common.map.ShowMap;
import platzerworld.kegeln.common.style.StyleManager;
import platzerworld.kegeln.gui.chart.KegelverwaltungChart;
import platzerworld.kegeln.gui.tabs.CustomTabActivity;
import platzerworld.kegeln.gui.utilities.UtilitiesActivity;
import platzerworld.kegeln.spieler.db.SpielerSpeicher;
import platzerworld.kegeln.spieler.vo.SpielerVO;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

/**
 * Zeigt die Liste der Geokontakte an.
 * 
 * @author Arno Becker, David Müller 2010 visionera gmbh
 * 
 */
public class SpielerAnlegen extends Activity implements ConstantsIF{

	private static final long serialVersionUID = 1L;

	/** Kuerzel fuers Logging. */
	private static final String TAG = ErgebnisseAnzeigen.class.getSimpleName();
	
	private TextView titeltext;
	
	private Button mSpeichernButton;
	private Button mAbbruchButton;
	private Button mSchnittButton;
	
	private EditText edtPassnr;
	private EditText edtName;
	private EditText edtVorname;
	private EditText edtGebDatum;
	private EditText edtLatitude;
	private EditText edtLongitude;

	private SpielerSpeicher mSpielerSpeicher;
	
	private SpielerVO mSpielerVO;
	private KeyValueVO mannschaftVO;
	
	private boolean isEditMode = false;

	@Override
	protected void onCreate(Bundle icicle) {
		super.onCreate(icicle);
		Log.d(TAG, "onCreate(): entered...");
		setContentView(R.layout.spieler_anlegen);

		Bundle extras = getIntent().getExtras();
		if (extras == null) {
			return;
		}
		
		isEditMode =  extras.getBoolean(INTENT_EXTRA_EDIT_MODE);
		if(!isEditMode){
			mannschaftVO = (KeyValueVO) extras.getSerializable(INTENT_EXTRA_MANNSCHAFT);
		}else{
			mSpielerVO = (SpielerVO) extras.getSerializable(INTENT_EXTRA_SPIELER);
		}
		
				
		init();
	}
	
	@Override
	protected void onStart() {
		super.onStart();
	}
	
	@Override
	protected void onDestroy() {
		cleanDatabase();
		super.onDestroy();
	}
	
	@Override
	protected void onResume() {
		if(isEditMode){
			bindWidgets();
		}
		
		super.onResume();
	}

	private void init(){
		initWidgets();
		initStyle();
		initListener();
		initContextMenu();
		initDatabase();
	}
	
	private void bindWidgets(){
		edtPassnr.setText(String.valueOf(mSpielerVO.passNr));
		edtName.setText(mSpielerVO.name);
		edtVorname.setText(mSpielerVO.vorname);
		edtGebDatum.setText(mSpielerVO.gebDatum);
		edtLatitude.setText(String.valueOf(mSpielerVO.latidute));
		edtLongitude.setText(String.valueOf(mSpielerVO.longitude));
		
		if(!isEditMode){
			titeltext.setText(getResources().getString(R.string.txt_spieler_neuanlegen_titel));
		}else{
			titeltext.setText(getResources().getString(R.string.txt_spieler_bearbeiten_titel));
		}
		
	}
	
	private void initStyle() {
		Typeface font = StyleManager.getInstance().init(this).getTypeface();
		titeltext.setTypeface(font);
	}
	
	private void initWidgets(){
		titeltext = (TextView) findViewById(R.id.txt_spieler_neuanlegen_titel);
		
		mSpeichernButton = (Button) findViewById(R.id.sf_spieler_neuanlagen_ok);
		mAbbruchButton = (Button) findViewById(R.id.sf_spieler_neuanlagen_abbruch);
		mSchnittButton = (Button) findViewById(R.id.sf_spieler_neuanlagen_schnitt);
		mSchnittButton.setEnabled(isEditMode);
		
		edtPassnr = (EditText) findViewById(R.id.edt_spieler_neuanlegen_passnr);
		edtName = (EditText) findViewById(R.id.edt_spieler_neuanlegen_name);
		edtVorname = (EditText) findViewById(R.id.edt_spieler_neuanlegen_vorname);
		edtGebDatum = (EditText) findViewById(R.id.edt_spieler_neuanlegen_gebdatum);
		edtLatitude = (EditText) findViewById(R.id.edt_spieler_neuanlegen_latitude);
		edtLongitude = (EditText) findViewById(R.id.edt_spieler_neuanlegen_longitude);
	}
	
	private void initListener(){		
		mSpeichernButton.setOnClickListener(mSpielerAnlegenOkListener);
		mAbbruchButton.setOnClickListener(mSpielerAnlegenAbbruchListener);
		mSchnittButton.setOnClickListener(mSpielerBearbeitenSchnittListener);
	}
	
	private void initContextMenu(){
	}
	
	private void initDatabase(){
	}
	
	private void cleanDatabase(){
	}
	
	private OnClickListener mSpielerAnlegenOkListener = new OnClickListener() {
	    public void onClick(View v) {	    	
	      speichern();
	    }
	};
	
	private OnClickListener mSpielerAnlegenAbbruchListener = new OnClickListener() {
	    public void onClick(View v) {
	      finish();
	    }
	};
	
	private OnClickListener mSpielerBearbeitenSchnittListener = new OnClickListener() {
	    public void onClick(View v) {
	    	schnitt();
	    }
	};
	
	private void schnitt(){
		final Intent settingsActivity = new Intent(this, CustomTabActivity.class);
		settingsActivity.putExtra(INTENT_EXTRA_EDIT_MODE, true);
		settingsActivity.putExtra(INTENT_EXTRA_SPIELER, mSpielerVO);
		startActivity(settingsActivity);
	}
	
	private void speichern(){
		if(validate()){
			float latitudeInt = Float.parseFloat(edtLatitude.getText().toString());
			float longitudeInt = Float.parseFloat(edtLongitude.getText().toString());
			
			mSpielerSpeicher = new SpielerSpeicher(this);
			
			
			if(!isEditMode){
				mSpielerVO = new SpielerVO(mannschaftVO.key, Long.parseLong(edtPassnr.getText().toString()), 
						edtName.getText().toString(), edtVorname.getText().toString(), edtGebDatum.getText().toString(),
						(int) (latitudeInt * 1E6), (int) (longitudeInt * 1E6));
				mSpielerVO.id = 0;
			}else{
				mSpielerVO.passNr = Long.parseLong(edtPassnr.getText().toString());
				mSpielerVO.name = edtName.getText().toString();
				mSpielerVO.vorname = edtVorname.getText().toString();
				mSpielerVO.gebDatum = edtGebDatum.getText().toString();
				mSpielerVO.latidute = (int) (latitudeInt * 1E6);
				mSpielerVO.longitude = (int) (longitudeInt * 1E6);
			}
			
			mSpielerSpeicher.speichereSpieler(mSpielerVO);
			finish();
		}else {
			Toast.makeText(this, "Passnr, Name, Vorname muessen angegeben werden", Toast.LENGTH_SHORT).show();
		}
	}

	@Override
	public void finish() {
		Intent data = new Intent();
		data.putExtra(INTENT_EXTRA_NEUER_SPIELER, mSpielerVO);
		setResult(RESULT_OK, data);
		super.finish();
	}
	
	private boolean validate(){
		if(edtLatitude.getText().length() < 1){
			edtLatitude.setText("0");
		}
		if(edtLongitude.getText().length() < 1){
			edtLongitude.setText("0");
		}
		
		if(edtPassnr.getText().length() > 0
			&& edtName.getText().length() > 0
			&& edtVorname.getText().length() > 0){
			return true;
		}
		return false;
	}

}
